package org.francho.apps.unutopia_android; import org.francho.apps.unutopia_android.app.RssIntent; import org.francho.apps.unutopia_android.data.FeedContract.Articles; import android.content.Context; import android.content.Intent; import android.database.Cursor; import android.net.Uri; import android.os.Bundle; import android.support.v4.app.Fragment; import android.text.format.DateUtils; import android.util.Log; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.webkit.WebView; import android.webkit.WebViewClient; import android.widget.TextView; /** * A fragment representing a single number detail screen. This fragment is * either contained in a {@link numberListActivity} in two-pane mode (on * tablets) or a {@link numberDetailActivity} on handsets. */ public class ArticleDetailFragment extends Fragment { private String mLink; /** * Mandatory empty constructor for the fragment manager to instantiate the * fragment (e.g. upon screen orientation changes). */ public ArticleDetailFragment() { } @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); if (getArguments().containsKey(RssIntent.EXTRA_ARTICLE_LINK)) { mLink = getArguments().getString(RssIntent.EXTRA_ARTICLE_LINK); } } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View rootView = inflater.inflate(R.layout.fragment_article_detail, container, false); final TextView titleView = (TextView) rootView .findViewById(R.id.article_title); final WebView descView = (WebView) rootView .findViewById(R.id.article_detail); setupWebView(descView); final TextView dateView = (TextView) rootView .findViewById(R.id.article_date); // Show the dummy content as text in a TextView. if (mLink != null) { String[] projection = new String[] { Articles.TITLE, // 0 Articles.CONTENT, // 1 Articles.PUB_DATE, // 2 Articles.LINK // 3 }; Cursor cursor = getActivity().getContentResolver().query(Articles.getUri(), projection, Articles.LINK + "=?", new String[]{mLink}, null); if (cursor != null && cursor.moveToFirst()) { String title = cursor.getString(0); titleView.setText(title); String html = cursor.getString(1); descView.loadDataWithBaseURL(null, html, "text/html", "utf-8", null); String date = (String) DateUtils.getRelativeTimeSpanString( getActivity(), cursor.getLong(2)); dateView.setText(date); } cursor.close(); } return rootView; } private void setupWebView(WebView webView) { webView.getSettings().setJavaScriptEnabled(true); webView.setWebViewClient(new WebViewClient() { public boolean shouldOverrideUrlLoading(WebView view, String url) { Log.d("WebView", url); Uri uri = Uri.parse(url); Context context = getActivity(); Intent intent = new Intent(Intent.ACTION_VIEW, uri); context.startActivity(intent); return (true); } }); } }